
package org.linlinjava.litemall.wx.service;

import com.github.pagehelper.Page;
import org.linlinjava.litemall.db.domain.LitemallGoods;
import org.linlinjava.litemall.db.domain.LitemallGrouponRules;
import org.linlinjava.litemall.db.service.LitemallGoodsService;
import org.linlinjava.litemall.db.service.LitemallGrouponRulesService;
import org.linlinjava.litemall.wx.vo.GrouponRuleVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class WxGrouponRuleService {

	@Autowired
	private LitemallGrouponRulesService grouponRulesService;

	@Autowired
	private LitemallGoodsService goodsService;

	public List<GrouponRuleVo> queryList(Integer page, Integer size) {
		return queryList(page, size, "add_time", "desc");
	}

	@SuppressWarnings({ "unchecked", "rawtypes" })
	public List<GrouponRuleVo> queryList(Integer page, Integer size, String sort, String order) {
		Page<LitemallGrouponRules> grouponRulesList = (Page) grouponRulesService.queryList(page, size, sort, order);
		Page<GrouponRuleVo> grouponList = new Page<GrouponRuleVo>();
		grouponList.setPages(grouponRulesList.getPages());
		grouponList.setPageNum(grouponRulesList.getPageNum());
		grouponList.setPageSize(grouponRulesList.getPageSize());
		grouponList.setTotal(grouponRulesList.getTotal());
		for (LitemallGrouponRules rule : grouponRulesList) {
			Integer goodsId = rule.getGoodsId();
			LitemallGoods goods = goodsService.findById(goodsId);
			if (goods == null) {
				continue;
			}
			GrouponRuleVo grouponRuleVo = new GrouponRuleVo();
			grouponRuleVo.setId(goods.getId());
			grouponRuleVo.setName(goods.getName());
			grouponRuleVo.setBrief(goods.getBrief());
			grouponRuleVo.setPicUrl(goods.getPicUrl());
			grouponRuleVo.setCounterPrice(goods.getCounterPrice());
			grouponRuleVo.setRetailPrice(goods.getRetailPrice());
			grouponRuleVo.setGrouponPrice(goods.getRetailPrice().subtract(rule.getDiscount()));
			grouponRuleVo.setGrouponDiscount(rule.getDiscount());
			grouponRuleVo.setGrouponMember(rule.getDiscountMember());
			grouponList.add(grouponRuleVo);
		}
		return grouponList;
	}
}